package ai.people.platform.information.converter;

import ai.people.netmon.framework.domain.archives.dto.InformationThirdPartySearchReqDTO;
import ai.people.netmon.framework.domain.archives.dto.ThirdPartyInformationDetailRespDTO;
import ai.people.netmon.framework.domain.archives.dto.ThirdPartyInformationSearchRespDTO;
import com.alibaba.fastjson.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * 信息查询请求响应参数的标准转换器
 *
 * @author LiGuanNan
 * @date 2022/6/9 11:35
 */
public interface StandardConverter {

    /**
     * 查询接口请求参数转化
     * 将标准的请求参数转换成目标数据源的请求参数
     * @param reqParam 标准请求参数
     * @return 目标数据源请求参数json字符串
     */
    String searchRequestParamConvert(InformationThirdPartySearchReqDTO reqParam);

    /**
     * 查询接口响应结果转化
     * 将目标数据源的响应结果转化成标准的响应结构
     * @param dataJson data字段的json结构
     * @return 标准的列表数据集合
     */
    List<ThirdPartyInformationSearchRespDTO> searchResponseParamConvert(JSONObject dataJson);

    /**
     * 详情接口请求参数转化
     * 将标准的请求参数转换成目标数据源的请求参数
     * @param dataId 数据唯一标识
     * @return 目标数据源请求参数json字符串
     */
    String detailRequestParamConvert(String dataId);

    /**
     * 详情接口响应结果转化
     * 将目标数据源的响应结果转化成标准的响应结构
     * @param dataJson data字段的json结构
     * @return field的map集合
     */
    Map<String, Object> detailResponseParamConvert(JSONObject dataJson);

}
